﻿//////////////////////////////////////////////////////////////////////////////
//
//  Copyright © 1998-2024 Glodon Company Limited.  All rights reserved.
//
//  Use of this software is subject to the terms of the Glodon license
//  agreement provided at the time of installation or download, or which
//  otherwise accompanies this software in either electronic or hard copy form.  
//
//////////////////////////////////////////////////////////////////////////////

#pragma once
#include "IJournalData.h"
#include "IJournalUiObject.h"
#include "IJournalUiEvent.h"
#include "GcmpJournalInterface.h"

namespace gcmp
{
    /// \brief 日志录制回放数据：用户UI交互操作数据
    ///
    /// 用户UI交互操作数据包括(日志)UI层Object数据和（日志）UI层Event数据
    class GCMP_JOURNAL_INTERFACE_EXPORT IJournalUiData : public IJournalData
    {
    public:
        virtual ~IJournalUiData() {}

        /// \brief 创建一个IJournalUiData实例
        ///
        /// \return IJournalUiData实例
        static gcmp::OwnerPtr<IJournalUiData> Create();

        /// \brief 设置（日志）UI层Object数据
        ///
        /// \param[in] opJournalUIObejct （日志）UI层Object数据
        /// \return 运行结果，true成功，false失败
        virtual bool SetUIObject(gcmp::OwnerPtr<IJournalUiObject> opJournalUIObejct) = 0;

        /// \brief 获取（日志）UI层Object数据
        ///
        /// \return （日志）UI层Object数据
        virtual const IJournalUiObject* GetUIObject() = 0;

        /// \brief 设置（日志）UI层Event数据
        ///
        /// \param[in] opJournalUIEvent （日志）UI层Event数据
        /// \return 运行结果，true成功，false失败
        virtual bool SetUIEvent(gcmp::OwnerPtr<IJournalUiEvent> opJournalUIEvent) = 0;

        /// \brief 获取（日志）UI层Event数据
        ///
        /// \return （日志）UI层Event数据
        virtual IJournalUiEvent* GetUIEvent() = 0;
    };
}



